package com.apache.database.constant;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import java.util.Collection;
import java.util.List;
import java.util.Properties;

/**
 * 验证字符类
 * 
 */
@Deprecated
public class Validator {

	/**
	 *判断对象数组是否为空
	 * 
	 * @param  object 对象数组
	 * @return        如果object为空返回true，不为空返回false 
	 */
	public static boolean isNull(Object[] object) {
		if (object == null || object.length == 0) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 判断一个字符串是否为空,为空则返回默认字符串
	 * 
	 * @param  str 传入的字符串
	 * @param  defaultStr 默认字符串
	 * @return     如果str为空返回defaultStr，不为空返回str 
	 */
	public static String isNull(String str, String defaultStr) {
		if (!isNull(str))
			return defaultStr;
		return str;
	}

	/**
	 *判断一个字符串是否为空
	 * 
	 * @param  str 传入的字符串
	 * @return     如果str为空返回true，不为空返回false 
	 */
	public static boolean isNull(String str) {
		if (str == null) {
			return true;
		}
		str = str.trim();
		if ((str.equals(StringPool.NULL)) || (str.equals(StringPool.BLANK))) {
			return true;
		}
		return false;
	}

	/**
	 *判断字符串不能为空
	 * 
	 * @param  str 传入的字符串
	 * @return     如果str不为空返回true，为空返回false   
	 */
	public static boolean isNotNull(String str) {
		return !isNull(str);
	}

	/**
	  * description: 判断字符串是否为空，如果为空取给定的默认值
	  * @param text       传入的字符串
	  * @param defaultStr 给定的默认值
	 */
	public static String getDefaultStr(String text, String defaultStr) {
		if (Validator.isNull(text))
			return defaultStr;
		return text;
	}

	/**
	 *判断对象是否为空
	 * 
	 * @param  obj 传入的对象
	 * @return     如果obj为空返回true，不为空返回false  
	 */
	public static boolean isEmpty(Object obj) {
		return obj == null;
	}

	/**
	 * 判断一个list集合是否为空
	 * 
	 * @param  list    传入的list
	 * @return         如果list为空或者长度为0返回true，不为空返回false  
	 */
	public static boolean isEmpty(List list) { //
		return list == null || list.size() == 0;
	}

	/**
	 * 判断一个list集合是否为空
	 * 
	 * @param  collection 传入的集合
	 * @return            如果collection为空或者长度为0返回true，不为空返回false  
	 */
	public static boolean isEmpty(Collection collection) { //
		return collection == null || collection.isEmpty();
	}

	/**
	 *获取字符串字节长度
	 * 
	 * @param  str 传入的字符串
	 * @return     如果字符串为空返回长度为0，否则返回字符串的字节长度 
	 */
	public static int getStrByteLength(String str) {
		if (isNull(str)) {
			return 0;
		} else {
			return str.getBytes().length;
		}
	}

	/**
	 * 获取Poperties文件
	 * 
	 * @param filePath 资源文件路径
	 * @return         返回Poperties中文件属性   
	 */
	public static Properties getProperties(String filePath) {
		Properties prop = null;
		FileInputStream fileInput = null;
		try {
			File file = new File(filePath);
			if (file.exists()) {// 判断文件夹是否存在
				prop = new Properties();
				fileInput = new FileInputStream(filePath);
				prop.load(fileInput);
			}
		} catch (IOException e) {
			System.out.println("文件读取失败 key=" + e.getMessage());
		} finally {
			try {
				if (!Validator.isEmpty(prop))
					fileInput.close();
			} catch (Exception e) {
				System.out.println("文件流关闭失败 key=" + e.getMessage());
			}
		}
		return prop;
	}

	/**
	 * @return 返回classes的绝对路径。
	 */
	public static String getClassLoaderPath() {
		String path = "";
		URL classLoaderUrl = Thread.currentThread().getContextClassLoader().getResource("");
		if (Validator.isEmpty(classLoaderUrl)) {
			path = Thread.currentThread().getContextClassLoader().getResource("/").getPath();//tomcat/weblogic
		} else {
			path = classLoaderUrl.getPath();
		}
		if (Validator.isNotNull(path)) {
			if (path.startsWith(File.separator) || path.startsWith("/")) {
				String systemType = getSystemType();
				if ("windows".equals(systemType))
					path = path.substring(1);
			}
			if (!path.endsWith(File.separator) && !path.endsWith("/"))
				path += "/";
		}
		return path;
	}

	/**
	 * 获取操作系统类型
	 *
	 * @return 返回操作系统类型
	 */
	public static String getSystemType() {
		String result = "windows";
		if (System.getProperty("os.name").equals("Linux")) {
			result = "linux";
		} else if ("Mac OS X".equals(System.getProperty("os.name"))) {
			result = "Mac OS X";
		}
		return result;
	}
}
